// 资源配置
import vueInstance from '@/main.js'
import { handleEmpty } from '@/utils/common'

const getUserId = () => {
  return vueInstance.$store.getters.getUserId
}

const functionNameStatus = (reqData) => {
  // item必须是菜单的名字，否则影响根据操作项筛选日志的功能
  if (reqData.functionName === 'homeTopo') {
    return 'HOME_TOPOLOGY_MAP' // 系统首页-拓扑图
  }
  if (reqData.functionName === 'homeGis') {
    return 'HOME_GIS_MAP' // 系统首页-GIS展示
  }
  if (reqData.functionName === 'alarm') {
    return 'MENU_LOSS_THRESHOLD' // 链损阈值
  }
  if (reqData.functionName === 'region') {
    return 'MENU_REGION_MANAGER' // 区域管理
  }
  if (reqData.functionName === 'facility') {
    return 'MENU_FACILITIES_MANAGE' // 设施管理
  }
  if (reqData.functionName === 'cable') {
    return 'MENU_CABLE_MANAGER' // 设施管理
  }
}

/**
 * 参数定义
 *
 * @param api
 *            接口地址
 * @param item
 *            操作项（必须是相应页面的菜单名称，否则操作日志页面根据操作项下拉列表会对应不上）
 * @param terminal
 *            操作命令（具体操作名称，如：登录，查询，修改设备名称等）
 * @param object
 *            操作对象（具体操作的对象名称，如：设备名，区域名等）
 * @param currentUserId
 *            当前操作用户ID
 * @param i18nKey
 *            国际化里面的key
 * @param reqData
 *            接口里携带的参数
 */

export default [
  {
    api: '/region/add',
    item: 'MENU_REGION_MANAGER', // 区域管理
    terminal: '',
    i18nKey: '',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      this.item = functionNameStatus(reqData)
      if (reqData.parentId == '0') {
        // 新增区域
        this.terminal = 'ADD_REGION'
        this.i18nKey = 'ADD_REGION_LOG'
      } else if (reqData.parentId != '0' && reqData.regionType === 'REGION') {
        // 新增区域子级
        this.terminal = 'ADD_CHILD'
        this.i18nKey = 'ADD_CHILD_REGION_LOG'
      } else if (reqData.parentId != '0' && reqData.regionType === 'STATION') {
        // 新增站点
        this.terminal = 'ADD_STATION'
        this.i18nKey = 'ADD_STATION_LOG'
      } else if (reqData.parentId != '0' && reqData.regionType === 'ROOM') {
        // 新增机房
        this.terminal = 'ADD_ROOM'
        this.i18nKey = 'ADD_ROOM_LOG'
      }
      const { regionName = '' } = reqData
      return JSON.stringify({
        regionName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/region/mod',
    item: 'MENU_REGION_MANAGER', // 区域管理
    terminal: '',
    i18nKey: '',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      this.item = functionNameStatus(reqData)
      if (reqData.regionType === 'REGION') {
        this.terminal = 'MODIFY_REGION'
        this.i18nKey = 'MOD_REGION_LOG'
      } else if (reqData.regionType === 'STATION') {
        this.terminal = 'MOD_STATION'
        this.i18nKey = 'MOD_STATION_LOG'
        if (reqData.stationDarg) { // 判断是不是拖拽站点
          this.terminal = 'DRAG_SITES'
          this.i18nKey = 'DRAG_SITES_LOG'
        }
      } else if (reqData.regionType === 'ROOM') {
        this.terminal = 'MOD_ROOM'
        this.i18nKey = 'MOD_ROOM_LOG'
      }
      const { regionName = '' } = reqData
      this.object = regionName
      return JSON.stringify({
        regionName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/region/del',
    item: 'MENU_REGION_MANAGER', // 区域管理
    terminal: '', // 删除区域
    i18nKey: '',
    object: '',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      this.object = reqData.logParams.regionName
      if (reqData.logParams.regionType === 'REGION') {
        this.terminal = 'DEL_REGION'
        this.i18nKey = 'DEL_REGION_LOG'
      } else if (reqData.logParams.regionType === 'STATION') {
        this.terminal = 'DEL_STATION'
        this.i18nKey = 'DEL_STATION_LOG'
      } else if (reqData.logParams.regionType === 'ROOM') {
        this.terminal = 'DEL_ROOM'
        this.i18nKey = 'DEL_ROOM_LOG'
      }
      return JSON.stringify({
        ...reqData.logParams,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/region/delByRegionId', // 删除站点
    item: 'HOME_GIS_MAP', // 系统首页-GIS展示
    terminal: 'DEL_STATION', // 删除站点
    i18nKey: '',
    object: '',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      this.object = reqData.logParams.regionName
      if (reqData.logParams.regionType === 'REGION') {
        this.terminal = 'DEL_REGION'
        this.i18nKey = 'DEL_REGION_LOG'
      } else if (reqData.logParams.regionType === 'STATION') {
        this.terminal = 'DEL_STATION'
        this.i18nKey = 'DEL_STATION_LOG'
      } else if (reqData.logParams.regionType === 'ROOM') {
        this.terminal = 'DEL_ROOM'
        this.i18nKey = 'DEL_ROOM_LOG'
      }
      return JSON.stringify({
        ...reqData.logParams,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/logicSegment/updateName',
    item: 'MENU_LINK_SEGMENT_MANAGER', // 链路段管理
    terminal: 'EDIT_ROUTE', // 修改链路段名称
    i18nKey: 'EDIT_ROUTE_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { segmentName = '', oldName = '' } = reqData
      this.object = segmentName
      return JSON.stringify({
        segmentName,
        oldName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/networkSegment/add',
    item: 'MENU_SEGMENT_MANAGER', // 网段管理
    terminal: 'ADD_SEGMENT', // 新增网段
    i18nKey: 'ADD_SEGMENT_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { segmentName = '' } = reqData
      this.object = segmentName
      return JSON.stringify({
        segmentName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/segmentChannel/updateBySegmentId',
    item: 'MENU_SEGMENT_MANAGER', // 网段管理
    terminal: 'MODIFY_SEGMENT', // 修改网段
    i18nKey: 'MODIFY_SEGMENT_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { segmentName = '' } = reqData
      this.object = segmentName
      return JSON.stringify({
        segmentName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/debug/updateChannelStatus',
    item: 'MENU_DELIVERY_CONFIG', // 交付配置
    terminal: 'MODIFY_SEGMENT', // 修改网段
    i18nKey: 'MODIFY_SEGMENT_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { segmentName = '' } = reqData
      this.object = segmentName
      return JSON.stringify({
        segmentName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/networkSegment/delBySegmentId',
    item: 'MENU_SEGMENT_MANAGER', // 网段管理
    terminal: 'DEL_SEGMENT', // 删除网段
    i18nKey: 'DEL_SEGMENT_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { segmentName = '' } = reqData
      this.object = segmentName
      return JSON.stringify({
        segmentName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/cable/add',
    item: 'MENU_CABLE_MANAGER', // 光缆管理
    terminal: 'ADD_OPTICAL_CABLE', // 新增光缆
    i18nKey: 'ADD_OPTICAL_CABLE_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { cableName = '' } = reqData
      return JSON.stringify({
        cableName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/cable/mod',
    item: 'MENU_CABLE_MANAGER', // 光缆管理
    terminal: 'MODIFY_OPTICAL_CABLE', // 修改光缆
    i18nKey: 'MODIFY_OPTICAL_CABLE_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { cableName = '' } = reqData
      this.object = cableName
      return JSON.stringify({
        cableName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/cable/delByCableId',
    item: 'MENU_CABLE_MANAGER', // 光缆管理
    terminal: 'DEL_CABLE', // 删除光缆
    i18nKey: 'DEL_CABLE_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { cableName = '' } = reqData
      this.object = cableName
      return JSON.stringify({
        cableName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/cable/delByCableId',
    item: 'MENU_CABLE_MANAGER', // 光缆管理
    terminal: 'EDIT_FIBRE', // 编辑纤芯
    i18nKey: 'EDIT_FIBRE_LOG',
    object: '',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { cableName = '' } = reqData
      this.object = cableName
      return JSON.stringify({
        cableName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/node/add',
    item: 'MENU_NODE_MANAGER', // 节点管理
    terminal: 'ADD_NODE', // 新增节点
    i18nKey: 'ADD_AFS_NODE_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { nodeName = '' } = reqData
      return JSON.stringify({
        nodeName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/node/mod',
    item: 'MENU_NODE_MANAGER', // 节点管理
    terminal: 'MOD_NODE', // 修改节点
    i18nKey: 'MOD_AFS_NODE_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { nodeName = '' } = reqData
      this.object = nodeName
      return JSON.stringify({
        nodeName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/node/delByNodeId',
    item: 'MENU_NODE_MANAGER', // 节点管理
    terminal: 'DEL_NODE', // 删除节点
    i18nKey: 'DEL_NODE_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { nodeName = '' } = reqData
      this.object = nodeName
      return JSON.stringify({
        nodeName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/node/updateSplicePortInfo', // 接头盒端口修改
    item: 'MENU_NODE_MANAGER', // 节点管理
    terminal: 'MOD_NODE', // 修改节点
    i18nKey: 'MOD_AFS_NODE_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const { nodeName = '' } = reqData
      this.object = nodeName
      return JSON.stringify({
        nodeName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/logicSegment/saveLogicSegment',
    item: 'MENU_LOSS_THRESHOLD', // 链损阈值
    terminal: 'ALARM_STRATEGY', // 门限配置
    i18nKey: 'ALARM_STRATEGY_LOG',
    object: '/',
    formatter(reqData) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      this.item = functionNameStatus(reqData.logParams)
      const paramKey = {
        enableSill: 'EFFECT_LOG',
        linkLossSill: 'LINK_LOSS_THRESHOLD_LOG',
        avgLossSill: 'AVERAGE_LOSS_THRESHOLD_LOG',
        endLengthSill: 'TIP_LENGTH_LOG',
        plugLossSill: 'PLUG_LOSS_THRESHOLD_LOG'
      }
      let desc = ''
      Object.keys(reqData.logParams).forEach(key => {
        if (paramKey[key]) {
          desc += vueInstance.$t(paramKey[key], { value: reqData.logParams[key] }) + '<br/>'
        }
      })
      const { segmentName = '' } = reqData
      this.object = segmentName
      return desc ? JSON.stringify({
        segmentName,
        currentUserId,
        desc,
        i18nKey: this.i18nKey
      }) : ''
    }
  },
  {
    api: '/cableFiber/batchUpdate',
    item: 'MENU_CABLE_MANAGER', // 光缆管理
    terminal: 'EDIT_FIBRE', // 编辑纤芯
    i18nKey: 'EDIT_FIBRE_LOG',
    object: '/',
    formatter(reqData, resData, config) { // 格式化content
      const currentUserId = getUserId() // 当前平台登录用户
      const cableName = config.params.cableName
      this.object = cableName
      return JSON.stringify({
        cableName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/facility/add',
    item: 'MENU_FACILITIES_MANAGE', // 光缆管理
    terminal: 'ADDE_FACILITY', // 新增地理节点（新增设施）
    i18nKey: 'ADD_GEO_NODE_LOG',
    object: '/',
    formatter(reqData, resData) { // 格式化content
      this.item = functionNameStatus(reqData)
      const currentUserId = getUserId() // 当前平台登录用户
      const { facilityName = '' } = reqData
      return JSON.stringify({
        facilityName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/facility/mod',
    item: 'MENU_FACILITIES_MANAGE', // 光缆管理
    terminal: 'EDIT_GEO_NODE', // 修改地理节点（修改设施）
    i18nKey: 'EDIT_GEO_NODE_LOG',
    object: '/',
    formatter(reqData, resData) { // 格式化content
      this.item = functionNameStatus(reqData)
      const currentUserId = getUserId() // 当前平台登录用户
      const { facilityName = '' } = reqData
      this.object = facilityName
      return JSON.stringify({
        facilityName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/facility/del',
    item: 'MENU_FACILITIES_MANAGE', // 光缆管理
    terminal: 'DEL_GEO_NODE', // 删除地理节点
    i18nKey: 'DEL_GEO_NODE_LOG',
    object: '/',
    formatter(reqData, resData) { // 格式化content
      this.item = functionNameStatus(reqData)
      const currentUserId = getUserId() // 当前平台登录用户
      const { facilityName = '' } = reqData
      this.object = facilityName
      return JSON.stringify({
        facilityName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/cableSegment/updateBySegmentId',
    item: 'MENU_CABLE_MANAGER', // 光缆管理
    terminal: 'EDIT_CABLE_SEGMENT_DETAIL', // 编辑光缆段详情
    i18nKey: 'EDIT_CABLE_SEGMENT_DETAIL_LOG',
    object: '/',
    formatter(reqData, resData) { // 格式化content
      this.item = functionNameStatus(reqData)
      const currentUserId = getUserId() // 当前平台登录用户
      const { cableName = '' } = reqData
      this.object = cableName
      return JSON.stringify({
        cableName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  },
  {
    api: '/cableSegment/modify', // 编辑光缆段或编辑路径
    item: 'MENU_CABLE_MANAGER', // 光缆管理
    terminal: 'EDIT_CABLE_SEGMENT_DETAIL', // 编辑光缆段
    i18nKey: 'EDIT_CABLE_SEGMENT_DETAIL_LOG',
    object: '/',
    formatter(reqData, resData) { // 格式化content
      this.item = functionNameStatus(reqData.logParams)
      if (reqData.logParams.actionName === 'editPath') {
        this.terminal = 'EDIT_PATH'
        this.i18nKey = 'EDIT_PATH_LOG'
      }
      if (reqData.logParams.actionName === 'editCableSegment') {
        this.terminal = 'EDIT_CABLE_SEGMENT_DETAIL'
        this.i18nKey = 'EDIT_CABLE_SEGMENT_DETAIL_LOG'
      }
      const currentUserId = getUserId() // 当前平台登录用户
      const { cableName = '' } = reqData
      this.object = cableName
      return JSON.stringify({
        cableName,
        currentUserId,
        i18nKey: this.i18nKey
      })
    }
  }
]
